//package com.example.hackercore.util;
//
//
//import com.auth0.jwt.JWT;
//import com.auth0.jwt.JWTVerifier;
//import com.auth0.jwt.algorithms.Algorithm;
//import com.auth0.jwt.interfaces.DecodedJWT;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.util.Date;
//
///**
// * Description：
// *
// * @Author: cw
// * CreateTime：2022-10-10
// */
//public class JwtUtil {
//
//    private final static Logger log = LoggerFactory.getLogger(JwtUtil.class);
//
//    public final static long EXPIRE = 1000 * 60 * 60 * 8;
//    public final static String SECRET = "mySercet";
//
//
//    /**
//     * 生成token
//     *
//     * @param userId
//     * @return
//     */
//    public static String create(String userId) {
//        String xToken = JWT.create()
//                .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRE))
//                .withClaim("userId", userId)
//                .sign(Algorithm.HMAC512(SECRET));
//        return xToken;
//    }
//
//    /**
//     * 验证token
//     *
//     * @param token
//     * @return
//     */
//    public static DecodedJWT verifierJwt(String token) {
//        try {
//            JWTVerifier verifier = JWT.require(Algorithm.HMAC512(SECRET)).build();
//            return verifier.verify(token);
//        } catch (Exception e) {
//            log.error("token解密失败", e);
//        }
//        return null;
//    }
//
//    /**
//     * 刷新token 未过期则直接返回，过期则给个新的token
//     *
//     * @param token
//     * @return
//     */
//    public static String refresh(String token) {
//        try {
//            JWTVerifier verifier = JWT.require(Algorithm.HMAC512(SECRET)).build();
//            DecodedJWT decodedJWT = verifier.verify(token);
//            Date date = decodedJWT.getExpiresAt();
//            if (date.before(new Date())) {
//                return create(decodedJWT.getClaim("userId").asString());
//            }
//        } catch (Exception e) {
//            log.error("token刷新失败", e);
//        }
//        return token;
//    }
//
//
//    /**
//     * 根据token 获取userId
//     *
//     * @param token
//     * @return
//     */
//    public static String getTokenUserId(String token) {
//        DecodedJWT decodedJWT = verifierJwt(token);
//        if (null != decodedJWT) {
//            return decodedJWT.getClaim("userId").asString();
//        }
//        return null;
//    }
//
//    /**
//     * 检查token是否过期
//     *
//     * @param token
//     * @return
//     */
//    public static boolean checkToken(String token) {
//        try {
//            JWTVerifier verifier = JWT.require(Algorithm.HMAC512(SECRET)).build();
//            DecodedJWT decodedJWT = verifier.verify(token);
//            Date date = decodedJWT.getExpiresAt();
//            if (date.before(new Date())) {
//                return true;
//            }
//        } catch (Exception e) {
//            log.error("token刷新失败", e);
//        }
//        return false;
//    }
//
//}
